home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 February / PCWFEB08.iso / Software / Freeware / Miro 1.0 / Miro_Installer.exe / Miro_Downloader.exe / frontend_implementation / VideoDisplay.pyc (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2007-11-12  |  6.7 KB  |  180 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. import app
  5. import frontend
  6. import os
  7. import util
  8. import config
  9. import prefs
  10. from download_utils import nextFreeFilename
  11. from xpcom import components
  12. from threading import Lock
  13. import frontend
  14. import time
  15. selectItemLock = Lock()
  16.  
  17. class PlaybackController(app.PlaybackControllerBase):
  18.     
  19.     def playItemExternally(self, itemID):
  20.         item = app.PlaybackControllerBase.playItemExternally(self, itemID)
  21.         moviePath = ''
  22.         
  23.         try:
  24.             moviePath = os.path.normpath(item.getVideoFilename())
  25.             os.startfile(moviePath)
  26.         except:
  27.             print 'DTV: movie %s could not be externally opened' % moviePath
  28.  
  29.  
  30.  
  31.  
  32. class VideoDisplay(app.VideoDisplayBase):
  33.     """Video player shown in a MainFrame's right-hand pane."""
  34.     
  35.     def initRenderers(self):
  36.         self.renderers.append(VLCRenderer())
  37.  
  38.     
  39.     def setArea(self, area):
  40.         pass
  41.  
  42.     
  43.     def removedFromArea(self):
  44.         pass
  45.  
  46.     
  47.     def goFullScreen(self):
  48.         return frontend.vlcRenderer.goFullscreen(url)
  49.  
  50.     
  51.     def exitFullScreen(self):
  52.         return frontend.vlcRenderer.exitFullScreen(url)
  53.  
  54.     
  55.     def setVolume(self, volume, moveSlider = True):
  56.         app.VideoDisplayBase.setVolume(self, volume)
  57.         frontend.vlcRenderer.setVolume(self.volume)
  58.         if moveSlider:
  59.             frontend.jsBridge.positionVolumeSlider(self.volume)
  60.         
  61.  
  62.     
  63.     def fillMovieData(self, filename, movie_data, callback):
  64.         print 'fillMovieData (%s)' % (filename,)
  65.         movie_data['screenshot'] = u''
  66.         self.movie_data = movie_data
  67.         self.callback = callback
  68.         frontend.vlcRenderer.extractMovieData(filename, movie_data['screenshot'])
  69.  
  70.     
  71.     def extractFinish(self, duration, screenshot_success):
  72.         print 'extractFinish (%d, %s)' % (duration, screenshot_success)
  73.         self.movie_data['duration'] = int(duration)
  74.         if screenshot_success:
  75.             self.movie_data['screenshot'] = u''
  76.         else:
  77.             self.movie_data['screenshot'] = None
  78.         self.callback()
  79.  
  80.  
  81.  
  82. def lockAndPlay(func):
  83.     
  84.     def locked(*args, **kwargs):
  85.         selectItemLock.acquire()
  86.         
  87.         try:
  88.             ret = func(*args, **kwargs)
  89.             time.sleep(1)
  90.             return ret
  91.         finally:
  92.             selectItemLock.release()
  93.  
  94.  
  95.     return locked
  96.  
  97.  
  98. class VLCRenderer(app.VideoRenderer):
  99.     '''The VLC renderer is very thin wrapper around the xine-renderer xpcom
  100.     component. 
  101.     '''
  102.     
  103.     def canPlayFile(self, filename):
  104.         url = util.absolutePathToFileURL(filename)
  105.         return frontend.vlcRenderer.canPlayURL(url)
  106.  
  107.     
  108.     def selectFile(self, filename):
  109.         url = util.absolutePathToFileURL(filename)
  110.         return frontend.vlcRenderer.selectURL(url)
  111.  
  112.     selectFile = lockAndPlay(selectFile)
  113.     
  114.     def setVolume(self, volume):
  115.         return frontend.vlcRenderer.setVolume(volume)
  116.  
  117.     
  118.     def reset(self):
  119.         return frontend.vlcRenderer.reset()
  120.  
  121.     reset = lockAndPlay(reset)
  122.     
  123.     def play(self):
  124.         return frontend.vlcRenderer.play()
  125.  
  126.     play = lockAndPlay(play)
  127.     
  128.     def pause(self):
  129.         return frontend.vlcRenderer.pause()
  130.  
  131.     
  132.     def stop(self):
  133.         return frontend.vlcRenderer.stop()
  134.  
  135.     stop = lockAndPlay(stop)
  136.     
  137.     def goToBeginningOfMovie(self):
  138.         return frontend.vlcRenderer.goToBeginningOfMovie()
  139.  
  140.     
  141.     def getDuration(self):
  142.         return frontend.vlcRenderer.getDuration()
  143.  
  144.     
  145.     def getCurrentTime(self):
  146.         
  147.         try:
  148.             return frontend.vlcRenderer.getCurrentTime()
  149.         except:
  150.             return None
  151.  
  152.  
  153.     
  154.     def setCurrentTime(self, time):
  155.         return frontend.vlcRenderer.setCurrentTime(time)
  156.  
  157.     
  158.     def playFromTime(self, time):
  159.         return frontend.vlcRenderer.playFromTime(time)
  160.  
  161.     playFromTime = lockAndPlay(playFromTime)
  162.     
  163.     def getRate(self):
  164.         return frontend.vlcRenderer.getRate()
  165.  
  166.     
  167.     def setRate(self, rate):
  168.         return frontend.vlcRenderer.setRate(rate)
  169.  
  170.     
  171.     def movieDataProgramInfo(self, videoPath, thumbnailPath):
  172.         moviedata_util_filename = 'Miro_MovieData.exe'
  173.         cmdLine = [
  174.             moviedata_util_filename,
  175.             videoPath,
  176.             thumbnailPath]
  177.         return (cmdLine, None)
  178.  
  179.  
  180.